1. Pengantar ggplot2

R adalah bahasa pemrograman yang banyak digunakan untuk analisis data dan statistik. Salah satu kekuatan utama R terletak pada kemampuannya dalam membuat visualisasi data yang fleksibel dan informatif. Di antara berbagai paket visualisasi yang tersedia, ggplot2 merupakan yang paling populer karena memanfaatkan konsep Grammar of Graphics untuk menghasilkan grafik yang terstruktur dan mudah dimodifikasi.

Fungsi utama ggplot2 adalah memungkinkan pengguna untuk membuat berbagai jenis grafik, seperti scatter plot, bar chart, line chart, dan histogram, dengan sintaks yang intuitif. ggplot2 juga menawarkan fleksibilitas tinggi dalam menyesuaikan elemen visual, seperti warna, bentuk, ukuran, dan tema, sehingga grafik dapat disesuaikan dengan kebutuhan presentasi atau analisis.

Tujuan ggplot2 adalah mempermudah proses eksplorasi data melalui visualisasi yang mendalam dan informatif. Grafik yang dihasilkan membantu pengguna memahami pola, tren, dan hubungan dalam data, yang esensial untuk analisis mendalam atau pengambilan keputusan. Dengan integrasi sempurna dalam ekosistem R, ggplot2 menjadi alat yang esensial bagi peneliti, analis data, dan profesional di berbagai bidang.

2. Dasar-dasar ggplot2

ggplot2 adalah salah satu paket visualisasi data di R yang menggunakan pendekatan Grammar of Graphics. Dengan ggplot2, pengguna dapat membangun grafik secara bertahap dengan menambahkan komponen-komponen tertentu. Berikut adalah dasar-dasar penting yang perlu dipahami:

2.1 Dataset

Data yang akan divisualisasikan harus sudah tersedia dalam bentuk data frame atau tibble. Data ini harus memiliki variabel-variabel yang relevan untuk divisualisasikan, seperti variabel numerik untuk sumbu x dan y atau variabel kategorik untuk grup atau warna.

2.2 Paket ggplot2

Pastikan paket ggplot2 telah diinstal dan di-load dalam lingkungan R. Jika belum, instalasi dapat dilakukan dengan: install.packages(“ggplot2), kemudian di aktifkan :

library(ggplot2) 

2.3.Membuat data frame

membuat dua kolom: x dan y. Kedua kolom ini berisi data acak yang dihasilkan menggunakan fungsi rnorm(100), yang menghasilkan 100 angka acak yang terdistribusi normal.

data <- data.frame(x = rnorm(100), y = rnorm(100))

2.4.Membuat plot,judul dan tema

membuat mengunakan ggplot.Data yang digunakan adalah data frame data, dan kita menetapkan sumbu x untuk kolom x dan sumbu y untuk kolom y.serta sebuah judul (Plot titik). Tema plot menggunakan theme_classic() yang memberikan tampilan yang lebih sederhana dan klasik.

print(ggplot(data, aes(x = x, y = y)) + 
        
#menentukat plot titik      
geom_point() +
  
#menambahkan judul plot dan sumbu        
labs(title = "Plot titik", x = "Sumbu x", y = "Sumbu y") +
  
#memilih tema  
theme_classic())

2.5 Faceting

Fitur ini memungkinkan pembuatan subplot berdasarkan kategori dalam data. Dua fungsi utama:

1.facet_wrap(): Membuat subplot satu dimensi.

2.facet_grid(): Membuat subplot dua dimensi berdasarkan kombinasi dua variabel.

# buat data frame contoh dengan variable kategorik
data <- data.frame(x = rnorm(100), y = rnorm(100), grup = sample(c("A","B","C","D"), 100,replace = TRUE))

# buat plot titik dengan faceting
ggplot(data, aes(x = x, y = y, color = grup)) +
  
#Menambahkan titik pada plot dengan ukuran titik yang lebih besar (ukuran 2).
  geom_point(size = 2) +
  
#Membagi plot menjadi beberapa sub-plot berdasarkan kategori yang ada di kolom grup. Setiap kategori (A, B, C, D) akan memiliki sub-plotnya sendiri.
  facet_wrap(~ grup) +
  
#Menentukan warna manual untuk masing-masing kategori grup. "A" diwarnai merah, "B" biru, "C" pink, dan "D" hijau.
  scale_color_manual(values = c("A" = "red", "B" = "blue", "C" = "pink", "D" = "green")) + 
  
# mengatur tema
  theme_minimal() +
  
#Menambahkan label pada legenda warna yang menjelaskan bahwa warna mewakili kategori "Grup".
  labs(color = "Grup")

3. Mengolah data dari file CSV

Sebelum membaca data, pastikan file yang akan dibaca berada di lokasi yang benar dan formatnya sesuai, seperti CSV atau Excel. Tentukan direktori kerja menggunakan setwd() jika perlu, dan pastikan paket yang dibutuhkan, seperti readr untuk CSV, sudah terinstal dan diload. Periksa struktur file, pastikan data terorganisir dengan baik, dan cek nama serta tipe kolom untuk memastikan konsistensi. Setelah itu, baca data dengan fungsi yang tepat dan periksa beberapa baris awal untuk memastikan semuanya terbaca dengan benar.

3.1 Membaca Data CSV

library(readr)
lizards <- suppressMessages(read_csv("lizards.csv"))
data lizard
data lizard

3.2 Mengolah data total_length dan weight menggunakan plot point

karna kita akan menggabungkan dua kolom maka kita buat, x = total_length dan y = weight plot point adalah Scatterplot biasa di mana setiap titik data diplot di koordinat sebenarnya berdasarkan nilai variabel.

library(ggplot2) 
ggplot(lizards, aes(x = total_length, y = weight)) + 
  geom_point() +
  labs(title = "Plot titik" , x = "total_length", y = "weight") + theme_classic()

3.3 Mengolah data total_length dan weight menggunakan plot jitter

plot jitter adalah Scatterplot yang memindahkan titik data sedikit secara acak (baik secara horizontal, vertikal, atau keduanya) untuk mengurangi tumpang tindih

library(ggplot2) 
ggplot(lizards, aes(x = total_length, y = common_name)) + 
  geom_jitter() +
  labs(title = "Plot titik lizard" , x = "total_length", y = "common_name") + theme_classic()

3.4 Mengolah data count total_length

karna kita akan menghitung frekuensi nilai dalam interval tertentu yaitu count maka, kita gunakan grafik histogram/batang agar mudah dipahami.

ggplot(data = lizards, aes(x = total_length)) + 
  geom_histogram(binwidth = 5) + # Sesuaikan binwidth
  labs(title = "Plot titik lizard", x = "Total Length") + 
  theme_classic()

3.4 Mengolah data count commond_name

karna command_name berisi kategorikal maka kita gunakan bar char.

library(ggplot2) 
ggplot(lizards, aes(y = common_name)) + 
  geom_bar() +
  labs(title = "Plot titik lizard" ,  y = "common_name") + theme_classic()

3.5 Mengolah data count weight dan menggatur colour

kita beri warna coral untuk grafik dan darkorange untuk titiknya, kita gunakan linetype untuk mengganti garis ke titik-titiknya.

suppressWarnings(
  ggplot(data = lizards, aes(x = weight)) +
    geom_histogram(fill = "coral", color = "darkorange4", size = 2, linetype = "dotted", binwidth = 5) +
    labs(title = "Plot titik lizard", x = "weight") +
    theme_classic()
)

3.6 Memberi warna dan shape plot point

untuk shapenya menggunakan kode angka, misal shape = 20 itu bentuk belah ketupat.

library(ggplot2) 
ggplot(lizards, aes(x = total_length, y = weight)) + 
  geom_point(shape = 20,colour = "deepskyblue4") +
  labs(title = "Plot titik" , x = "total_length", y = "weight") + theme_classic()

3.7 Memberi warna data dengan kategori tertentu.

sumbu x = total lenght dan y = weight, untuk warnanya di kategorikan berdasarkan common_name dan sizenya berdasarkan total_length

library(ggplot2) 
ggplot(lizards, aes(x = total_length, y = weight,)) + 
  geom_point(aes(colour = common_name,size= total_length)) +
  labs(title = "Plot titik" , x = "total_length", y = "weight") + theme_classic()

4. Animasi grafik menggunakan gganimate

4.1 install packages

library(gapminder)
library(ggplot2)
library(gganimate)

4.2 import data

library(gapminder)
data=gapminder
data

4.3 membuat plot

library(gapminder)
library(ggplot2)

gapminder_plot <- ggplot(
  gapminder, 
  aes(x = gdpPercap, y = lifeExp)) + 
  geom_point(shape = 20, colour = "deepskyblue4") + 
  scale_x_log10() +
  labs(title = "Plot Titik", x = "GDP per Capita", y = "Life Expectancy") +
  theme_classic()


gapminder_plot

library(gapminder)
library(ggplot2)
gapminder_plot <- ggplot(
  gapminder, 
  aes(x = gdpPercap, y=lifeExp)
  ) +
  geom_point(alpha = 0.6) +
  scale_x_log10() +
  labs(x = "GDP per capita", y = "Life expectancy")
gapminder_plot

4.4 menambahkan elemen

  • size = pop, colour = continent
  • scale_colour_viridis_d()
# Load libraries
library(gapminder)
library(ggplot2)

# Buat plot dengan data gapminder
gapminder_plot <- ggplot(gapminder, aes(x = gdpPercap, y = lifeExp)) + 
  geom_point(aes(size = pop, colour = continent)) + 
  scale_x_log10() +
  labs(title = "Plot Titik", x = "GDP per Capita", y = "Life Expectancy") +
  theme_classic()

# Tampilkan plot
gapminder_plot

gapminder_plot <- ggplot(
  gapminder, 
  aes(x = gdpPercap, y=lifeExp, size = pop, colour = continent)
  ) +
  geom_point(alpha = 0.6) +
  scale_x_log10() +
  scale_color_viridis_d(option = "viridis") +
  labs(x = "GDP per capita", y = "Life expectancy")
gapminder_plot

4.5 menambahkaan transisi

harus menggunakan fungsi time

library(gganimate) #transition time
# Tambahkan animasi menggunakan gganimate
gapminder_plot + transition_time(year) + # Buat animasi berdasarkan tahun
  labs(title = "Year: {frame_time}") # Tampilkan tahun pada setiap frame

4.6 menambahkan benua

library(gganimate)
gapminder_plot + facet_wrap(~continent) +
  transition_time(year) +
  labs(title = "Year: {frame_time}")